package com.michale.system.service;

import com.michale.common.domain.operate.CacheEntity;
import io.swagger.annotations.Api;

import java.util.List;
import java.util.Set;

/**
 * @author Michale
 * @apiNote  缓存管理 服务层
 */
@Api(value = "缓存管理-服务类")
public interface CacheService {

    /**
     * 查询缓存名称列表
     *
     * @return 缓存名称列表
     */
    List<CacheEntity> getCacheNameList();

    /**
     * 查询缓存键名列表
     *
     * @param cacheName 缓存名称
     * @return 缓存键名列表
     */
    Set<String> getCacheKeyList(String cacheName);

    /**
     * 查询缓存内容
     *
     * @param cacheName 缓存名称
     * @param cacheKey  缓存键值
     * @return 缓存内容
     */
    CacheEntity getCacheValue(String cacheName, String cacheKey);

    /**
     *
     * 清理指定名称缓存
     * @param cacheName 缓存名称
     */
    void clearCacheName(String cacheName);

    /**
     * 清理指定键名缓存
     *
     * @param cacheKey 缓存键名
     */
    void clearCacheKey(String cacheKey);

    /**
     * 根据缓存名称清理全部缓存键名
     *
     * @param cacheName 缓存名称
     */
    void clearCacheKeyAll(String cacheName);
}
